package com.quick.proxy.core;

import cn.hutool.extra.spring.SpringUtil;
import com.quick.proxy.core.config.ProxyConfig;

/**
 * Description: 协议常量
 * Author: 吃素不吃肉
 * Date: 2023/7/4
 *
 * @author 吃素不吃肉
 */

public interface ProtocolConstants {
    int STX_SIZE = 2;
    int RS_CTL_SIZE = 1;
    int CMD_TYPE_SIZE = 1;
    int LENGTH_SIZE = 2;
    int BCC_SIZE = 1;

    /**
     * 获取数据帧长度 计算示例：lengthSize=2,2个字节的16进制最大值为0xFFFF,换算成10进制为65535,长度为占2个字节,可传输最大数据为65535个字节
     *
     * @return 长度 默认占两字节
     */
    static int getLengthSize() {
        int maxDataSize = SpringUtil.getBean(ProxyConfig.class).getMaxDataSize();
        String hex = Integer.toHexString(maxDataSize * 1024);
        return Math.max(hex.length() / 2, LENGTH_SIZE);
    }
}
